Red Blob Games

  from Amit Patel
my red blob logo

Hi! I make interactive visual explanations of math and algorithms, using motivating examples from computer games.

Learn

Introduction to A* and implementation guideAlso: Dijkstra’s Algorithm, Breadth First Search
Tower Defense pathfindingAlso: Breadth First Search, Dijkstra Maps, Flow Field pathfinding
Hexagonal grid reference and implementation guideAlso: non-orthogonal bases, relation to cubes
2D Visibility algorithmAlso: sweep algorithms
Intro to graph theoryAlso: how to represent grids as graphs
Probability for RPG DamageAlso: probability distributions, nonparametric distributions
Line drawingAlso: linear interpolation (lerp), supercover
Curved roadsAlso: Bezier curves, circular arcs, biarcs
Map generation from noise and noise function conceptsAlso: Simplex/Perlin Noise, signal processing
Polygonal Map Generation[1]Also: blue noise, Delaunay triangulation, Voronoi diagrams, water flow
Grid parts: tiles, edges, vertices for squares, hexagons, and triangles
Grid edges and tiles for square grids
Guide to Delaunator[4], a Delaunay+Voronoi library Also: mesh data structures, half-edges
Noisy edges out of straight lines Also: area-constrained noisy paths
Filled circles on a grid
All pairs shortest paths for map analysis
screenshot of my game programming site page[5]

I’ve been curating game development articles since 1990[6], and my web site has been up since 1995. All of my articles are available for free, with no signup and no ads. The main audience is independent, student, and hobbyist software developers. I started experimenting with interactive explanations in 2004, but didn’t figure out until 2007   the style of interactive explanation I use now[7].


Play

I make fun demos while learning new things and writing explanations:

Mapgen4 map generator lets you draw your own terrain
Procedural face generator (inspired by a Scott McCloud book)
Ellipse from lines (inspired by a 3blue1brown video)
Modulo multiplication (inspired by a Mathologer video)
Orbits of planets (inspired by a John Carlos Baez blog post)
Noisy edges using shaders
Bacterial cell animation
Conveyor belt editor (inspired by Factorio)
Rounded cells and Chaikin Curves
Dyson hatching (inspired by a Watabou project)
Triangle patterns on a Delaunay mesh
Shape transitions (inspired by a Dave Bees Bombs project)

Ponder

I also explore ideas sometimes without writing a full guide:

Meta

I’m working on a series of pages that explain how to make interactive guides:

Accompanying code is open source, under either the MIT License[23] or the Apache v2 License[24]. Both allow use in commercial projects. Other projects are found at at github/amitp[25] and github/redblobgames[26]. My project ideas board[27] is public.

About me#

I’ve been helping people make games since 1990. I wrote games earlier in life, with Solar Realms Elite[28] being the most well known[29], then worked on an environmental simulation game called BlobCity, then took a break for over a decade. The recent rise of indie, mobile, tablet, social, and web games have made me interested in game development again. My current passion is using interactivity on the web for learning, especially computer science and math. I’ve started with game development because it’s a rich source of interesting problems that can be explained visually. With modern web browsers, we can use explanations that don’t follow the formats used in magazines, technical papers, and books. We can combine learning by reading, learning by watching, and learning by doing[30].

I previously worked with Root-1[31] on educational games, Wild Shadow Studios on Realm of the Mad God[32], Peter Norvig on interactive diagrams for Artifical Intelligence: A Modern Approach[33], and Nonagon Games on A Chronicle of Misdeeds[34]. I’m currently working with Jetbolt Games[35] on Galactic Assault Squad[36].

If you’re in the Silicon Valley area and want to chat in person, email me at redblobgames@gmail.com. I’m especially interested in algorithms related to maps, procedural generation, and pathfinding, but love to chat about anything.